perror()
এবং strerror()
ফাংশন দুটি Socket Programming এবং অন্যান্য সিস্টেম প্রোগ্রামিংয়ের ক্ষেত্রে ত্রুটি বার্তা প্রদর্শন করার জন্য ব্যবহৃত হয়। এগুলো ত্রুটির উৎস সম্পর্কে বিস্তারিত এবং ব্যবহারযোগ্য তথ্য প্রদান করে, যা ডিবাগিং এবং ত্রুটি শনাক্ত করতে অত্যন্ত সহায়ক। নিচে perror()
এবং strerror()
ফাংশনের ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।
perror()
perror()
ফাংশনটি একটি সহজ পদ্ধতি, যা সিস্টেম ত্রুটি (যেমন, সিস্টেম কল বা লাইব্রেরি ফাংশনের ত্রুটি) শনাক্ত করে এবং সঠিক ত্রুটি বার্তা প্রদর্শন করে। এটি errno
এর মান ব্যবহার করে কাজ করে এবং বার্তার শেষে ত্রুটির ব্যাখ্যা প্রদান করে।
perror()
এর সিগনেচার (C ভাষায়)void perror(const char *message);
message
: ব্যবহারকারীর প্রদত্ত একটি বার্তা, যা ত্রুটির সাথে সম্পর্কিত তথ্য দেয়।perror()
errno
এর মান অনুযায়ী সিস্টেম ত্রুটি প্রদর্শন করে।perror()
এর উদাহরণ (C ভাষায়)#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <errno.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("Socket creation failed");
exit(EXIT_FAILURE);
}
return 0;
}
perror()
ফাংশন Socket creation failed:
বার্তা প্রদর্শন করবে এবং এর সাথে errno
এর মান অনুযায়ী ত্রুটি সম্পর্কে বিস্তারিত তথ্য দেখাবে, যেমন:Socket creation failed: Address already in use
perror()
গুরুত্বপূর্ণ:errno
এর মান পড়ে এবং সিস্টেম ত্রুটির জন্য উপযুক্ত বার্তা প্রদান করে।strerror()
strerror()
ফাংশনটি errno
ত্রুটি কোডের উপর ভিত্তি করে একটি বিস্তারিত ত্রুটি বার্তা প্রদান করে। এটি একটি স্ট্রিং ফিরিয়ে দেয়, যা ব্যবহারকারী কাস্টম বার্তা বা লগ ফাইলে ব্যবহার করতে পারেন।
strerror()
এর সিগনেচার (C ভাষায়)char *strerror(int errnum);
errnum
: errno
ত্রুটি কোড বা অন্য কোনো নির্দিষ্ট ত্রুটি কোড।strerror()
এর উদাহরণ (C ভাষায়)#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
printf("Error: %s\n", strerror(errno));
exit(EXIT_FAILURE);
}
return 0;
}
strerror(errno)
ত্রুটি কোডের উপর ভিত্তি করে একটি String প্রদান করবে, যা ত্রুটির বিস্তারিত তথ্য দেখাবে, যেমন:Error: Address already in use
strerror()
গুরুত্বপূর্ণ:strerror()
ব্যবহার করে কাস্টম বার্তা তৈরি করা যায় এবং ত্রুটি লগ ফাইলে সংরক্ষণ করা যায়, যা ডিবাগিং এবং অ্যাপ্লিকেশন মনিটরিংয়ে সহায়ক।errno
ছাড়াও অন্য কোনো ত্রুটি কোডও গ্রহণ করতে পারে, যার ফলে বিভিন্ন পরিস্থিতিতে এটি ব্যবহার করা যায়।perror()
বনাম strerror()
বৈশিষ্ট্য | perror() | strerror() |
---|---|---|
ব্যবহার | ত্রুটি বার্তা সরাসরি প্রিন্ট করে। | ত্রুটির জন্য একটি String ফেরত দেয়। |
ইনপুট | ব্যবহারকারীর প্রদত্ত বার্তা এবং errno । | errno বা নির্দিষ্ট ত্রুটি কোড। |
ফ্লেক্সিবিলিটি | সরাসরি প্রিন্টিং এর জন্য সহজ। | কাস্টম বার্তা বা লগিংয়ের জন্য ব্যবহারযোগ্য। |
ফর্ম্যাট | message: system error message | কেবল সিস্টেম ত্রুটির বার্তা ফিরিয়ে দেয়। |
perror()
এবং strerror()
একত্রে ব্যবহার করার উদাহরণ#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
void log_error(const char *message) {
FILE *logfile = fopen("error_log.txt", "a");
if (logfile) {
fprintf(logfile, "%s: %s\n", message, strerror(errno));
fclose(logfile);
}
}
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("Socket creation failed");
log_error("Socket creation failed");
exit(EXIT_FAILURE);
}
return 0;
}
perror()
সরাসরি ত্রুটি বার্তা প্রদর্শন করে, এবং strerror()
একটি String ফিরিয়ে দিয়ে ত্রুটি বার্তা লগ ফাইলে সংরক্ষণ করে। এটি ত্রুটি চেকিং এবং লগিংয়ের জন্য একটি কার্যকর পদ্ধতি।
common.read_more